#pragma once
#include <string>
#include <vector>
#include <limits>
#include "md5_parser.h"
#include "md5_nodes.h"

namespace krryn{
namespace data{
	class md5_mesh_parser : public md5_parser{
	public:
		md5_mesh_parser(const std::string &a_Filename, size_t a_MemoryBudgetBytes = 1024 * 1024);

		md5_model &get_model() { return m_Model; }
		virtual void parse();
	private:
		md5_model m_Model;

		void settings();
		void joints_block();
		md5_joint joint();
		void mesh_block();
		void mesh_data(int a_Index);
		void shader_data(int a_Index);
		void vertex(int a_Index);
		void triangle(int a_Index);
		void weight_data(int a_Index);
		bool is_valid_eof();
	};
}
}